Business rules encapsulate an application's business logic, making the application easier to understand, document, maintain, and test. If the application is in a legacy system and is being modernized, the business rules are extracted from the legacy system to ensure that the application's business logic is implemented in the modern system. Because the modern system will have its own way of performing system administration tasks, the rules for performing administration tasks in the legacy system do not need to be implemented in the modern system, and therefore the administration task rules in the legacy system do not need to be extracted. Known techniques in automated business rule extraction from a legacy code base start by querying the code base for specific code structures (e.g., an if-then statement and other code branching) and variables to identify a list of candidate business rules. Because the known business rule extraction approaches are high recall, low precision techniques, the resulting list is extremely inaccurate. A significant portion of the candidates on the list are not actual business rules (i.e., false positives). Some candidates on the list may be logging, exception handling, or some form of housecleaning, which are not actual business rules. Further work by human experts to eliminate those candidates on the list that are not actual business rules is a costly, time-consuming manual process.
U.S. Pat. No. 6,389,588 to Wadhwa et al. discloses an approach for extracting a business rule from a legacy application and transforming the extracted business rule into new code that is integrated into a new application. A user identifies business rules in the legacy application by determining a particular variable, data structure and/or “IF” statement is associated with business rules and using a graphical editor program to display portions of the legacy application in which the particular variable, data structure and/or “IF” statement is used. New code containing the business rule is generated for and integrated into the new application.